import toJson from './toJson.js';

/**
 * 将数据转换为名称/值对编码字符串【同步方法】
 * @description 将数据转换为名称/值对编码字符串，如：name=abc&age=100
 * @param {String,Object} data 要转换的数据，要求为可转json格式
 * @param {boolean} isEncodeURI 是否需要对转换后的value进行URL编码
 * @return {String} 转换后的编码字符串
 */
function toQueryString(data = {}, isEncodeURI = false) {
	
	// 初始化返回数据为false
	var data_return = false;
	
	// 将data参数转换为json格式
	var obj_data = toJson(data);
	// 如果转换成功，才执行
	if (obj_data) {
		// 初始化结果字符串
		var str_result = '';
		// 循环data参数
		for (let k in obj_data)
		{
			// 节点 - value值
			let ele_value = obj_data[k];
			// 如果子级为object
			if (typeof(ele_value)=="object")
			{
				// 将值转换为string
				try { ele_value = JSON.stringify(ele_value); }
				catch (e) {}
			}
			// 其它格式
			else { ele_value = ele_value.toString(); }
            // 如果需要对转换后的value进行URL编码
            if (isEncodeURI == true) { str_result += k + "=" + encodeURIComponent(ele_value) + "&"; }
            else { str_result += k + "=" + ele_value + "&"; }
		}
		// 去掉最后一个"&"符号
		if (str_result.length > 0) { str_result = str_result.substring(0, str_result.length-1); }
		// 返回的结果数据 赋值
		data_return = str_result;
	}
	
	// 返回结果数据
	return data_return;
}

export default toQueryString;